<?php

class HTTPRequest {
    
    static public function Query($url, $data, $referrer = "") {
        
        if(function_exists("curl_init")) {
            
            $params = "";
            foreach ($data as $k=>$v)
            {
                $params.= "$k=".urlencode($v)."&";
            }
            $params = substr($params,0,-1);
            
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_POST, 1);
            curl_setopt($ch, CURLOPT_HEADER, 0);
            curl_setopt($ch, CURLOPT_URL, $url);
            //为了支持cookie
            curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
            curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
            $result = curl_exec($ch);
            
        } else {
            // parsing the given URL
            $URL_Info=parse_url($URL);
            // Building referrer
            if($referrer=="") {
                $referrer=$_SERVER["SCRIPT_URI"];
            }

            // making string from $data
            foreach($data as $key=>$value) {
                $values[]="$key=".urlencode($value);
            }

            $data_string=implode("&",$values);
            // Find out which port is needed - if not given use standard (=80)
            if(!isset($URL_Info["port"])) {
                $URL_Info["port"]=80;
                // building POST-request:
                $request.="POST ".$URL_Info["path"]." HTTP/1.1\n";
                $request.="Host: ".$URL_Info["host"]."\n";
                $request.="Referer: $referrer\n";
                $request.="Content-type: application/x-www-form-urlencoded\n";
                $request.="Content-length: ".strlen($data_string)."\n";
                $request.="Connection: close\n";
                $request.="\n";
                $request.=$data_string."\n";
                $fp = fsockopen($URL_Info["host"],$URL_Info["port"]);
                fputs($fp, $request);
                while(!feof($fp)) {
                    $result .= fgets($fp, 128);
                }
                fclose($fp);
            }
        }
        
        return $result;
        
    }
    
}

?>
